// pages/meeting/list.js
const { courseAPI } = require('../../utils/util.js')

Page({
  data: {
    courseList: [], // 已加载的课程列表
    isLoading: false, // 当前是否在加载中
    hasMore: true, // 是否还有更多数据
    searchKey: '', // 搜索关键词
    courseSort: null, // 课程分类
    currentUserId: 1, // 当前用户ID，写死为1
  },

  onLoad() {
    // 初始加载课程数据
    this.loadCourseData();
  },

  // 加载课程数据
  loadCourseData() {
    if (this.data.isLoading) return;

    this.setData({ isLoading: true });

    const params = {
      currentUserId: 1 // 直接使用写死的用户ID
    };

    // 添加搜索条件
    if (this.data.searchKey) {
      params.courseName = this.data.searchKey;
    }
    if (this.data.courseSort) {
      params.courseSort = this.data.courseSort;
    }

    // 打印请求信息用于调试
    console.log('请求参数:', params);
    console.log('请求URL:', `${getApp().globalData.apiBaseUrl}/api/course/search`);

    courseAPI.searchCourse(params)
      .then(res => {
        console.log('课程数据获取成功:', res);
        
        if (res.code === 200) {
          // 转换数据格式以适配前端显示
          const courseList = res.data.map(course => ({
            id: course.courseId,
            title: course.courseName,
            summary: this.cleanHtmlTags(course.courseIntro),
            cover: this.buildImageUrl(course.courseCover),
            video: this.buildVideoUrl(course.courseVideo),
            author: course.courseAuthor,
            time: this.formatDateTime(course.createTime),
            status: course.courseStatus
          }));

          this.setData({
            courseList: courseList,
            isLoading: false,
            hasMore: false // 后端返回所有数据，不需要分页
          });
        } else {
          console.error('API返回错误:', res);
          wx.showToast({
            title: res.message || '获取数据失败',
            icon: 'none'
          });
          this.setData({ isLoading: false });
        }
      })
      .catch(err => {
        console.error('获取课程数据失败:', err);
        console.error('错误详情:', err.message);
        wx.showToast({
          title: '网络请求失败',
          icon: 'none'
        });
        this.setData({ isLoading: false });
      });
  },

  // 格式化日期时间
  formatDateTime(dateTimeStr) {
    if (!dateTimeStr) return '';
    const date = new Date(dateTimeStr);
    const year = date.getFullYear();
    const month = String(date.getMonth() + 1).padStart(2, '0');
    const day = String(date.getDate()).padStart(2, '0');
    return `${year}-${month}-${day}`;
  },

  // 构建图片URL
  buildImageUrl(imageName) {
    if (!imageName) {
      console.log('图片名称为空，使用默认图片');
      return 'https://picsum.photos/300/180?random=1'; // 默认图片
    }
    // 如果已经是完整URL，直接返回
    if (imageName.startsWith('http://') || imageName.startsWith('https://')) {
      console.log('图片已经是完整URL:', imageName);
      return imageName;
    }
    // 构建完整的图片URL
    const fullUrl = `${getApp().globalData.apiBaseUrl}/images/${imageName}`;
    console.log('构建图片URL:', fullUrl);
    return fullUrl;
  },

  // 构建视频URL
  buildVideoUrl(videoName) {
    if (!videoName) {
      console.log('视频名称为空');
      return ''; // 没有视频
    }
    // 如果已经是完整URL，直接返回
    if (videoName.startsWith('http://') || videoName.startsWith('https://')) {
      console.log('视频已经是完整URL:', videoName);
      return videoName;
    }
    // 构建完整的视频URL
    const fullUrl = `${getApp().globalData.apiBaseUrl}/images/${videoName}`;
    console.log('构建视频URL:', fullUrl);
    return fullUrl;
  },

  // 清理HTML标签
  cleanHtmlTags(htmlContent) {
    if (!htmlContent) return '';
    
    // 移除HTML标签，保留文本内容
    return htmlContent
      .replace(/<p[^>]*>/gi, '') // 移除开始p标签
      .replace(/<\/p>/gi, '\n') // 将结束p标签替换为换行
      .replace(/<br[^>]*>/gi, '\n') // 将br标签替换为换行
      .replace(/<[^>]+>/g, '') // 移除其他所有HTML标签
      .replace(/&nbsp;/g, ' ') // 将&nbsp;替换为空格
      .replace(/&amp;/g, '&') // 将&amp;替换为&
      .replace(/&lt;/g, '<') // 将&lt;替换为<
      .replace(/&gt;/g, '>') // 将&gt;替换为>
      .replace(/&quot;/g, '"') // 将&quot;替换为"
      .trim(); // 去除首尾空格
  },

  // 搜索输入
  onSearchInput(e) {
    this.setData({ searchKey: e.detail.value });
  },

  // 执行搜索
  doSearch() {
    this.setData({ courseList: [] });
    this.loadCourseData();
  },

  // 跳转到课程详情
  goDetail(e) {
    const courseId = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/meeting/detail?id=${courseId}`
    });
  },

  // 下拉刷新
  onPullDownRefresh() {
    this.setData({ courseList: [] });
    this.loadCourseData().then(() => {
      wx.stopPullDownRefresh();
    });
  },

  // 页面上拉触底事件的处理函数
  onReachBottom() {
    // 由于后端返回所有数据，这里不需要加载更多
    // 如果需要分页，可以在这里实现
  },

  // 用户点击右上角分享
  onShareAppMessage() {
    return {
      title: '测盟汇技术课程',
      path: '/pages/meeting/list'
    };
  },
})